19.4.1 性能对比#
1. 执行性能#
Skills 执行性能
Skills 的执行性能主要受限于 LLM 的推理时间和网络延迟。
性能特征:
python
典型执行时间(毫秒)
意图解析:300-500ms
参数提取:200-400ms
技能执行:100-300ms
结果生成:400-600ms
总时间:1000-1800ms
性能优化策略:
python
插件执行性能
插件的执行性能主要取决于代码效率和系统资源。
性能特征:
插件执行时间分解
class PluginPerformanceMetrics: def init(self): self.metrics = { "parameter_validation": 0, # 参数验证时间 "method_execution": 0, # 方法执行时间 "result_processing": 0, # 结果处理时间 "total_time": 0 # 总时间 } def measure_execution(self, plugin, method_name, parameters): """测量执行时间""" start_time = time.time()
参数验证
valid_start = time.time() self.validate_parameters(plugin, method_name, parameters) self.metrics["parameter_validation"] = time.time() - valid_start
方法执行
exec_start = time.time() result = getattr(plugin, method_name)(**parameters) self.metrics["method_execution"] = time.time() - exec_start
结果处理
proc_start = time.time() formatted_result = self.process_result(result) self.metrics["result_processing"] = time.time() - proc_start self.metrics["total_time"] = time.time() - start_time return formatted_result
典型执行时间(毫秒)
参数验证:5-15ms
方法执行:20-100ms
结果处理:5-10ms
总时间:30-125ms
bash
性能指标
单个请求:1000-1800ms
并发 5 个:1200-2000ms(每个)
并发 10 个:1500-2500ms(每个)
并发 20 个:2000-3500ms(每个)
bash
性能指标
单个请求:30-125ms
并发 10 个:40-150ms(每个)
并发 50 个:60-200ms(每个)
并发 100 个:100-300ms(每个)
3. 资源消耗#
Skills 资源消耗
class SkillResourceMonitor: def init(self): self.metrics = { "cpu_usage": [], # CPU 使用率 "memory_usage": [], # 内存使用 "network_io": [], # 网络 I/O "api_calls": 0 # API 调用次数 } def monitor_execution(self, skill, user_input): """监控执行过程""" import psutil
记录初始状态
process = psutil.Process() initial_cpu = process.cpu_percent() initial_memory = process.memory_info().rss
执行技能
result = skill.execute(user_input)
记录最终状态
final_cpu = process.cpu_percent() final_memory = process.memory_info().rss
计算资源消耗
self.metrics["cpu_usage"].append(final_cpu - initial_cpu) self.metrics["memory_usage"].append(final_memory - initial_memory) self.metrics["api_calls"] += 1 return result
典型资源消耗
CPU 使用率:10-30%
内存使用:100-500MB
网络 I/O:1-5MB/请求
API 调用:2-4 次/请求
bash
典型资源消耗
CPU 使用率:5-15%
内存使用:50-200MB
磁盘 I/O:100KB-10MB/请求
网络 I/O:100KB-1MB/请求
4. 性能对比表#
| 性能指标 | Skills | 插件 |
|---|---|---|
| 单次执行时间 | 1000-1800ms | 30-125ms |
| 并发能力 | 低(5-10) | 高(50-100+) |
| CPU 使用率 | 10-30% | 5-15% |
| 内存使用 | 100-500MB | 50-200MB |
| 网络 I/O | 1-5MB/请求 | 100KB-1MB/请求 |
| 可扩展性 | 中 | 高 |
| 吞吐量 | 低 | 高 |
| 延迟 | 高 | 低 |
19.4.2 安全对比#
1. 输入安全#
Skills 输入安全
Skills 需要防范提示注入攻击和敏感信息泄露。
class SkillInputSecurity: def init(self): self.injection_patterns = [ r"ignore.*instructions", r"forget.*previous", r"new.*instructions", r"override.*system" ] self.sensitive_keywords = [ "password", "token", "api_key", "secret", "credential" ] def sanitize_input(self, user_input): """清理输入""" import re
1. 检测注入攻击
for pattern in self.injection_patterns: if re.search(pattern, user_input, re.IGNORECASE): raise SecurityError("检测到潜在的注入攻击")
2. 移除敏感信息
sanitized = user_input for keyword in self.sensitive_keywords:
使用占位符替换敏感信息
pattern = rf"{keyword}\s*[:=]\s*[^\s]+" sanitized = re.sub(pattern, f"{keyword}=REDACTED", sanitized, flags=re.IGNORECASE)
3. 限制输入长度
max_length = 10000 if len(sanitized) > max_length: sanitized = sanitized[:max_length] return sanitized def validate_input(self, user_input): """验证输入"""
检查恶意代码
if self.contains_malicious_code(user_input): raise SecurityError("输入包含恶意代码")
检查特殊字符
if self.contains_dangerous_characters(user_input): raise SecurityError("输入包含危险字符") return True
bash
使用内容审核 API
这里简化实现
harmful_keywords = ["暴力", "仇恨", "非法"] for keyword in harmful_keywords: if keyword in text: return True return False def add_warning(self, text, warning): """添加警告""" return f"[警告: {warning}]\n\n{text}"
bash
bash
3. 访问控制#
Skills 访问控制
Skills 的访问控制相对宽松,主要依赖 LLM 的理解能力。
class SkillAccessControl: def init(self): self.permissions = { "admin": ["all"], "user": ["read", "write"], "guest": ["read"] } def check_permission(self, user, skill_name, action): """检查权限""" user_role = user.get("role", "guest") user_permissions = self.permissions.get(user_role, []) if "all" in user_permissions: return True if action in user_permissions: return True raise PermissionError(f"用户 {user['username']} 无权限执行 {action}") def filter_sensitive_data(self, user, data): """过滤敏感数据""" user_role = user.get("role", "guest") if user_role == "admin": return data
移除敏感字段
filtered = data.copy() sensitive_fields = ["internal_notes", "admin_only"] for field in sensitive_fields: filtered.pop(field, None) return filtered
bash
插件审计日志
python
5. 安全对比表#
| 安全特性 | Skills | 插件 |
|---|---|---|
| 输入验证 | 弱 | 强 |
| 输出过滤 | 中 | 强 |
| 访问控制 | 弱 | 强 |
| 审计日志 | 中 | 强 |
| 类型安全 | 无 | 强 |
| 注入防护 | 弱 | 强 |
| 敏感信息保护 | 中 | 强 |
| 代码审查 | 困难 | 容易 |
| 安全测试 | 困难 | 容易 |
| 合规性 | 中 | 强 |